package main

import (
	"fmt"

	"gopkg.in/macaron.v1"
)

func main() {
	m := macaron.Classic()
	m.Get("/", next1, next2, next3)

	m.Run()
}

func next1(ctx *macaron.Context) {
	fmt.Println("处理器1进入...")
	ctx.Next()
	fmt.Println("处理器1退出...")
}

func next2(ctx *macaron.Context) {
	fmt.Println("处理器2进入...")
	ctx.Next()
	fmt.Println("处理器2退出...")
}

func next3(ctx *macaron.Context) {
	fmt.Println("处理器3进入...")
	ctx.Next()
	fmt.Println("处理器3退出...")
}

// go run main.go
// 结果类似于堆栈结构，先进后出
// 处理器1进入...
// 处理器2进入...
// 处理器3进入...
// 处理器3退出...
// 处理器2退出...
// 处理器1退出...
